package com.leetCode.tree;

import java.util.*;

/**
 * Description:
 * Copyright:   Copyright (c)2019
 * Company:     zefu
 *
 * @author: 张李鑫
 * @version: 1.0
 * Create at:   2021-10-22 10:02:43
 * <p>
 * Modification History:
 * Date         Author      Version     Description
 * ------------------------------------------------------------------
 * 2021-10-22     张李鑫                     1.0         1.0 Version
 */
public class TreeNode {
    public int val;
    public TreeNode left;
    public TreeNode right;

    public TreeNode() {
    }

    public TreeNode(int val) {
        this.val = val;
    }

    public TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }

    public static void printII(Integer i){
        i++;
    }
//    import java.util.*;
    public static class Main{
        public static void main(String[]args){
            Scanner sc=new Scanner(System.in);
            long l= sc.nextLong();
            double sq= Math.sqrt(l);
            for(int i=2;i<=sq;i++){
                while(l%i==0){
                    System.out.print(i+" ");
                    l/=i;
                }
            }
        }
    }

    public static void main(String[] args) {
        System.out.println(Math.sqrt(93938));
    }
//    public static void main(String[] args) {
//        String a="ssddddddd";
//        String b="ssddddddd";
//        System.out.println(a==b);
//        new HashMap<String,String>(10);
////        TreeNode treeNodddde = new TreeNode(1);
////        TreeNode treeNode1 = new TreeNode(2);
////        TreeNode treeNode2 = new TreeNode(3);
////        TreeNode treeNode3 = new TreeNode(4);
////        TreeNode treeNode4 = new TreeNode(5);
////        TreeNode treeNode5 = new TreeNode(6);
////        TreeNode treeNode6= new TreeNode(7);
////
////        treeNode.left=treeNode1;
////        treeNode.right=treeNode2;
////
////        treeNode1.left=treeNode3;
////        treeNode1.right=treeNode4;
////        treeNode2.left=treeNode5;
////        treeNode2.right=treeNode6;
////
////        print(treeNode);
////        System.out.println("  ");
////        process(treeNode);
////        System.out.println(" ");
////        printI(treeNode);
//
//    }

    public static void process(TreeNode treeNode){
        if (treeNode==null){
            return;
        }
        process(treeNode.left);
        process(treeNode.right);
        System.out.print(treeNode.val+",");
    }

    public static void  print(TreeNode treeNode){
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(treeNode);

        Stack<Object> objects = new Stack<>();
        while (!queue.isEmpty()){
            TreeNode cur = queue.poll();
            System.out.print(cur.val+",");
            if (cur.left!=null){
                queue.add(cur.left);
            }
            if (cur.right!=null){
                queue.add(cur.right);
            }
        }
    }

    public static void printI(TreeNode treeNode){
        Stack<TreeNode> stack = new Stack<>();
        stack.push(treeNode);
        while (!stack.isEmpty()) {
            TreeNode pop = stack.pop();
            System.out.print(pop.val+",");
            if (pop.right!=null){
                stack.add(pop.right);
            }
            if (pop.left!=null){
                stack.add(pop.left);
            }
        }
    }
}
